<?php 
/**
 * 公共控制器
 * 放一些公共的方法
 * @author 阿柱 <422852954@qq.com>
 */
class CommonController extends Controller{
   	/**
	 * 获取顶级分类
	 */
	protected function topCate(){
		$topCate = M()->query("SELECT * FROM hd_category WHERE pid=0");
		$this->assign('topCate',$topCate);
	}
	protected function topCount(){
		$sql="SELECT sum(ask) as s FROM hd_user ";
		$count=M()->query($sql);
		$count=$count[0]['s'];
//		分配累计提问数变量
		$this->assign('count',$count);
	}
	
	/**
	 * 经验转换等级
	 */
	protected function expToLv($exp){
		//获得等级对应经验的数据
		$lvData = include "Application/Common/Conf/lvConfig.php";
		foreach ($lvData as $lv => $e) {
			if($exp < $e){
				return $lv - 1;
			}
		}
		return 20;
	}
	
	/**
	 * 等级转经验
	 */
	protected function lvToExp($lv){
		$lvData = include "Application/Common/Conf/lvConfig.php";
		if($lv>=20){
			return '您以达到满级,继续努力';
		}
		$lv=$lvData[$lv];
		
		return $lv;
	}
	
	
	/**
	 * 每日回答问题最多的人
	 */
	protected function dayStar(){
		//每天零点的时间戳
		$zero = strtotime(date('Y-m-d'));
		//统计、排序、截取、分组
		$sql = "SELECT *,COUNT(*) AS s FROM hd_answer WHERE time>={$zero} GROUP BY uid ORDER BY s DESC LIMIT 1";
		//每日回答之星有可能没有那就是空数组
		$data = M()->query($sql);
		if(empty($data))   return;
//		采纳率
		$sql="SELECT *,accept/answer AS c FROM hd_user where uid={$data[0]['uid']}";
		$acceptRate=M()->query($sql);
//		把接纳率重新压入数据中  ??怎么取两位小数
		$data[0]['c']=$acceptRate[0]['c']*100;
		$data[0]['c']=round($data[0]['c'],2). "%";
//		将用户名存入数据
		$data[0]['username']=$acceptRate[0]['username'];
//		将经验值转换为等级
		$data[0]['lv']=$this->expToLv($acceptRate[0]['exp']);
		$data[0]['face']=$acceptRate[0]['face'];
//		分配变量
		$this->assign('dayStar',$data);
	}
	
	/**
	 * 历史回答最多的人
	 */
	protected function historyStar(){
		//直接查询hd_user，按照回答数降序排序截取1个
		//回答数
		$sql="SELECT * FROM hd_user ORDER BY answer DESC LIMIT 1";
		$data =M()->query($sql);
				
		$sql="SELECT accept,exp FROM hd_user ORDER BY answer DESC LIMIT 1";
		$accept=M()->query($sql);
//		算的采纳率
		$cainalv=$data[0]['accept']/$data[0]['answer'] * 100;

//		采纳率取两位小数点
		$data[0]['c']=round($cainalv,2) . '%';
//		转换等级
		$data[0]['lv']=$this->expToLv($accept[0]['exp']);
//		分配变量
		$this->assign('historyStar',$data);

	}
	
	/**
	 * 后盾问答助人光荣榜
	 */
	protected function helpPeople(){
		//直接查询hd_user，按照采纳数降序排序截取1个
		$sql="SELECT * FROM hd_user ORDER BY accept/answer DESC LIMIT 4";
		$data=M()->query($sql);
//		分配变量
		$this->assign('helpPeople',$data);
		
	}
	
	/**
	 * 获得面包屑导航
	 */
	
	protected function _fatherCate($data,$cid){
		static $temp=array();
		foreach ($data as $v) {
			if($v['cid']==$cid){
//				压入临时数组
				$temp[]=$v;
				$this->_fatherCate($data,$v['pid']);
			}
		}
		return $temp;
	}
	
	/**
	 * 判断session
	 */
	protected function judgeSession(){
		//		如果session存在
		if(isset($_SESSION['uname']) && isset($_SESSION['uid'])){
			$sql="SELECT * FROM hd_user WHERE username='{$_SESSION['uname']}'";
			$login=M()->query($sql);
//			采纳率			
			if($login[0]['answer']!=0){
				$login[0]['c']=$login[0]['accept']/$login[0]['answer'] *100 ;
				$login[0]['c']=round($login[0]['c'],2).'%';
			}else{
				$login[0]['c']=0;
			}
			
//			等级
			$login[0]['lv']=$this->expToLv($login[0]['exp']);
			$this->assign('login',$login);
			return $login;
//			p($login);die;
		}
	}
	
	
	
 }
 
 
 


 
 
 
 



 ?>